#include<stdio.h>
#include<unistd.h>
#include<sys/wait.h>
#include<sys/types.h>
#include<stdlib.h>
#include<errno.h>
#include<string.h>

int main()
{
    pid_t id = fork();
    if(id == 0)
    {
        // 子进程
        int cnt = 5;
        while(cnt)
        {
            printf("我是一个子进程，pid:%d, ppid:%d\n",getpid(),getppid());
            sleep(1);
            cnt--;
        }
        exit(1);
    }

    sleep(3);
    // 父进程
    // 1》子进程退出
    // 2》子进程没有退出
    
    int status;
    pid_t rid = waitpid(id,&status,0);
    if(rid > 0)
    {
        printf("wait success, rid:%d,exit code:%d\n",rid,(status>>8)&0xFF);
    }
    else{
        printf("wait failed:%d:%s\n",errno,strerror(errno));
    }
    return 0;
}
